in the SMP case) the handler may make another domain send an event
again, and that must not be lost.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
int do_event(evtchn_port_t port, struct pt_regs *regs)
{
ev_action_t *action;
+
+ clear_evtchn(port);
+
if (port >= NR_EVS) {
printk("Port number too large: %d\n", port);
- goto out;
+ return 1;
}
action = &ev_actions[port];
/* call the handler */
action->handler(port, regs, action->data);
- out:
- clear_evtchn(port);
-
return 1;
}